home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / keyb / dkey.zip / KEYLIB.ASM < prev    next >
Assembly Source File  |  1986-07-25  |  3KB  |  180 lines

  1.  
  2. PAGE    60,132
  3. TITLE    KEYLIB  -  C INTERFACE ROUTINES FOR DKEY
  4.  
  5. COMMENT !
  6.  
  7.     ret = dk_reset();        clear entire macro table
  8.     ret = dk_disable();        disable translation
  9.     ret = dk_enable();        enable translation
  10.     ret = dk_set(keycode,def);    install or alter key definition
  11.     ret = dk_get(keycode,def);    retrieve definition by keycode
  12.     kc = dk_gnum(num,def);        retrieve definition by sequence #
  13.     bytes = dk_size();        retrieve size of macro table
  14.  
  15.     int ret;        return value.     0 = success
  16.                         -1 = DK not resident
  17.                          1 = other failure
  18.  
  19.     int keycode;        BIOS keycode.  Key scan code in upper 8 bits
  20.     char *def;        string for definition.  Length of destination
  21.                   NOT checked for dk_get() and dk_gnum()
  22.     int kc;            keycode returned from dk_gnum()
  23.                     -1 = DK not resident
  24.                     -2 = requested definition not found
  25.                     otherwise is BIOS keycode
  26.     unsigned num;        sequence number for definition.  0 = lowest
  27.     unsigned bytes;        length of macro table.
  28.                                         65535 = DK not resident
  29.  
  30.     The assembly language routines in DKEY are 'allowed' to (but might not)
  31.     trash the the following registers:
  32.     
  33.             AX,BX,CX,DX,DI,SI,ES
  34.  
  35. !
  36.  
  37. INCLUDE DOS.MAC
  38. INCLUDE STRUCT.MAC
  39.  
  40. DKEY    MACRO    func
  41.     MOV    AH,&0func&H
  42.     INT    16H
  43.     ENDM
  44.  
  45.     PSEG
  46.  
  47.  
  48.  
  49.     PROCEDURE DK_RESET
  50.  
  51.     CALL    DK_RESIDENT
  52.     JNZ    END1
  53.     DKEY    80
  54. END1:    RET
  55.  
  56. DK_RESET    ENDP
  57.  
  58.  
  59.  
  60.     PROCEDURE DK_DISABLE
  61.     
  62.     CALL    DK_RESIDENT
  63.     JNZ    END4
  64.     DKEY    81
  65. END4:    RET
  66.  
  67. DK_DISABLE    ENDP
  68.  
  69.  
  70.  
  71.     PROCEDURE DK_ENABLE
  72.     
  73.     CALL    DK_RESIDENT
  74.     JNZ    END5
  75.     DKEY    82
  76. END5:    RET
  77.  
  78. DK_ENABLE    ENDP
  79.  
  80.  
  81.  
  82.     PROCEDURE DK_SET
  83.     
  84.     ENTER
  85.     PASSW    KEYCODE
  86.     PASSA    DEF
  87.     
  88.     CALL    DK_RESIDENT
  89.     JNZ    END6
  90.     PUSH    DS
  91.     MOV    CX,KEYCODE
  92.     IF LDATA
  93.     LES    DI,DEF
  94.     ELSE
  95.     MOV    DI,DS
  96.     MOV    ES,DI
  97.     MOV    DI,DEF
  98.     ENDIF
  99.     DKEY    83
  100.     POP    DS
  101. END6:    RETURN
  102.  
  103. DK_SET    ENDP
  104.  
  105.  
  106.  
  107.     PROCEDURE DK_GET
  108.     
  109.     ENTER
  110.     PASSW    KEYCODE
  111.     PASSA    DEF
  112.     
  113.     CALL    DK_RESIDENT
  114.     JNZ    END7
  115.     PUSH    DS
  116.     MOV    CX,KEYCODE
  117.     IF LDATA
  118.     LES    DI,DEF
  119.     ELSE
  120.     MOV    DI,DS
  121.     MOV    ES,DI
  122.     MOV    DI,DEF
  123.     ENDIF
  124.     DKEY    84
  125.     POP    DS
  126. END7:    RETURN
  127.  
  128. DK_GET    ENDP
  129.  
  130.  
  131.  
  132.     PROCEDURE DK_GNUM
  133.     
  134.     ENTER
  135.     PASSW    NUM
  136.     PASSA    DEF
  137.     
  138.     CALL    DK_RESIDENT
  139.     JNZ    END8
  140.     PUSH    DS
  141.     MOV    CX,NUM
  142.     IF LDATA
  143.     LES    DI,DEF
  144.     ELSE
  145.     MOV    DI,DS
  146.     MOV    ES,DI
  147.     MOV    DI,DEF
  148.     ENDIF
  149.     DKEY    85
  150.     POP    DS
  151. END8:    RETURN
  152.  
  153. DK_GNUM    ENDP
  154.  
  155.  
  156.  
  157.     PROCEDURE DK_SIZE
  158.     
  159.     CALL    DK_RESIDENT
  160.     JNZ    END9
  161.     DKEY    86
  162. END9:    RET
  163.  
  164. DK_SIZE    ENDP
  165.  
  166.  
  167.  
  168. PUBLIC    DK_RESIDENT
  169. DK_RESIDENT    PROC
  170.  
  171.         DKEY    87
  172.         CMP     AX,'JW'                 ;ZERO SET IF DKEY RESIDENT
  173.         MOV     AX,0FFFFH               ;JUST IN CASE
  174.         RET
  175.  
  176. DK_RESIDENT    ENDP
  177.  
  178.     ENDPS
  179.     END
  180.